<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@0.9.0"> </script>
    <script>
        // 内存管理   dispose 和 tf.tidy
        // 以在张量或变量上调用dispose来清除它并释放其GPU内存
        const x = tf.tensor2d([[0.0, 2.0], [4.0, 6.0]]);
        const x_squared = x.square();

        x.dispose();
        x_squared.dispose();

        // 进行大量的张量操作时使用dispose可能会很麻烦
        // tf.tidy执行一个函数并清除所有创建的中间张量，释放它们的GPU内存。 它不清除内部函数的返回值
        // tidy不会清除变量
        // 传递给tf.tidy的函数应该是同步的，并且不会返回Promise。我们建议在tf.tidy内不要有更新UI或在发出远程请求的代码。
        const average = tf.tidy(() => {
            const y = tf.tensor1d([1.0, 2.0, 3.0, 4.0]); // 这两个张量在返回数值后都会被清除
            const z = tf.ones([4]); // 这两个张量在返回数值后都会被清除

            return y.sub(z).square().mean();
        })
        average.print()
    </script>

</head>

<body>

</body>

</html>